package de.infinit.spring.boot.autoconfigure.wro4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.embedded.FilterRegistrationBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import ro.isdc.wro.config.jmx.ConfigConstants; import ro.isdc.wro.http.ConfigurableWroFilter; import ro.isdc.wro.manager.factory.WroManagerFactory; import ro.isdc.wro.model.resource.locator.factory.ConfigurableLocatorFactory; import ro.isdc.wro.model.resource.processor.factory.ConfigurableProcessorsFactory; import ro.isdc.wro.model.resource.support.hash.ConfigurableHashStrategy; import ro.isdc.wro.model.resource.support.naming.ConfigurableNamingStrategy; import java.util.Properties; @Configuration @EnableConfigurationProperties(Wro4jProperties.class) public class Wro4jConfig { @Autowired Wro4jProperties wro4jProperties; @Bean ConfigurableWroFilter wroFilter(WroManagerFactory wroManagerFactory) { ConfigurableWroFilter wroFilter = new ConfigurableWroFilter(); wroFilter.setProperties(wroFilterProperties()); wroFilter.setWroManagerFactory(wroManagerFactory); return wroFilter; } Properties wroFilterProperties() { Properties properties = new Properties(); properties.put(ConfigConstants.debug.name(), String.valueOf(wro4jProperties.isDebug())); properties.put(ConfigConstants.disableCache.name(), String.valueOf(wro4jProperties.isDisableCache())); properties.put(ConfigConstants.cacheUpdatePeriod, String.valueOf(wro4jProperties.getCacheUpdatePeriod())); properties.put(ConfigConstants.resourceWatcherUpdatePeriod, String.valueOf(wro4jProperties.getResourceWatcherUpdatePeriod())); properties.put(ConfigConstants.cacheGzippedContent, String.valueOf(wro4jProperties.isCacheGzippedContent())); properties.put(ConfigConstants.parallelPreprocessing, String.valueOf(wro4jProperties.isParallelProcessing())); return properties; } @Bean FilterRegistrationBean wro4jFilterRegistration(ConfigurableWroFilter wroFilter) { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(wroFilter); filterRegistrationBean.addUrlPatterns(wro4jProperties.getUrlPattern()); return filterRegistrationBean; } @ConditionalOnClass(groovy.lang.GroovyObject.class) @ConditionalOnMissingBean(WroManagerFactory.class) @Bean WroManagerFactory groovyWroManagerFactory() { return new GroovyWroManagerFactory(wro4jProperties.getGroovyResourceName(), wroManagerFactoryProperties()); } @ConditionalOnMissingBean(WroManagerFactory.class) @Bean WroManagerFactory fallbackWroManagerFactory() { return new SimpleWroManagerFactory(wroManagerFactoryProperties()); } Properties wroManagerFactoryProperties() { Properties properties = new Properties(); properties.put(ConfigurableLocatorFactory.PARAM_URI_LOCATORS, wro4jProperties.getUriLocators()); properties.put(ConfigurableProcessorsFactory.PARAM_PRE_PROCESSORS, wro4jProperties.getPreProcessors()); properties.put(ConfigurableProcessorsFactory.PARAM_POST_PROCESSORS, wro4jProperties.getPostProcessors()); properties.put(ConfigurableNamingStrategy.KEY, wro4jProperties.getNamingStrategy()); properties.put(ConfigurableHashStrategy.KEY, wro4jProperties.getHashStrategy()); return properties; } }